Total Complexity | 4 |
Total Lines | 30 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | /* eslint-disable promise/prefer-await-to-callbacks */ |
||
8 | export default class Console extends Transport { |
||
9 | constructor(options = {}) { |
||
10 | super(options); |
||
11 | this.name = options.name || 'console'; |
||
12 | this.eol = options.eol || os.EOL; |
||
13 | this.logger = options.logger || console; |
||
14 | this.fallBackLogger = options.fallBackLogger || defaultLogger; |
||
15 | this.handlers = options.levels || {}; |
||
16 | this.sanitizer = options.sanitizer || defaultSanitizer; |
||
17 | this.setMaxListeners(options.maxListeners || defaultMaxListeners); |
||
18 | } |
||
19 | |||
20 | log(info, callback) { |
||
21 | setImmediate(() => { |
||
22 | this.emit('logged', info); |
||
23 | }); |
||
24 | const level = info[LEVEL]; |
||
25 | const message = info[MESSAGE]; |
||
26 | |||
27 | const log = [ |
||
28 | this.handlers[level], |
||
29 | this.logger[this.handlers[level]], |
||
30 | this.logger[level], |
||
31 | this.fallBackLogger |
||
32 | ].find((element) => isLoggable(element)); |
||
33 | |||
34 | log(this.sanitizer(message)); |
||
35 | callback(); |
||
36 | } |
||
37 | } |
||
38 |